<?php
/**
 * IndexController
 * 
 * @author
 * @version 
 */
require_once 'Zend/Controller/Action.php';
class Admin_IndexController extends Thaind_Controller_Action
{
	var $_arrParam;
    public function init()
    {
//    	Truyền các tham số nhận được ra view

    	$this->_arrParam = $this->_request->getParams();
    	$this->view->arrParam = $this->_arrParam;
    }

    public function preDispatch(){
    	
//    	Chọn layout mặc định cho các action trong controller
    	
		$template_path = TEMPLATE_PATH . "/admin/default";
		$this->loadTemplate($template_path,'template.ini','template');

//		Kiểm tra đăng nhập

		$auth = Zend_Auth::getInstance();
		if (!$auth->hasIdentity() && strtolower($this->_arrParam['action']) != "login"){
			$this->_arrParam['action'] = 'login';
			$this->_forward('login','index','admin',$this->_arrParam);
		}
    }
    
    /**
     * The default action - show the home page
     */
    public function indexAction ()
    {
    	$this->_redirect("/admin/product");
    }
	public function loginAction ()
    {
//    	Load model và form sử dụng trong action

    	Zend_Loader::loadClass("Admin_Forms_LoginForm");
    	Zend_Loader::loadClass("Admin_Models_UserAdminModel");
    	Zend_Loader::loadClass("Admin_Models_LoginModel");
    	
//    	Chọn layout cho trang login

		$template_path = TEMPLATE_PATH . "/admin/default";
		$this->loadTemplate($template_path,'template.ini','login');
		
//		Khai báo biến

		$form = new Admin_Forms_LoginForm();
		$admin_user_model = new Admin_Models_UserAdminModel();
		$login_model = new Admin_Models_LoginModel();
//		Xử lý khi user đăng nhập

		if ($this->_request->isPost()){
			if ($form->isValid($this->_arrParam)){
				$data = $form->getValues();
				$user_info = $admin_user_model->getUserInfoByUsername($data['username']);
				if ($user_info){
					$data['salt'] = $user_info['salt'];
					if ($login_model->login($data)){
						$this->view->headMeta()->appendHttpEquiv('Refresh','5;URL=' .$_SERVER['REQUEST_URI']);
    					$this->render('login-successful');
					}else{
						$this->view->error_message = "Đăng nhập không thành công";
					}
				}else{
					$this->view->error_message = "Tài khoản không tồn tại";
				}
			}
		}
//		Truyền biến ra view

		$this->view->form = $form;
    }
	public function logoutAction(){
		$auth = Zend_Auth::getInstance();
		$auth->clearIdentity();
   		$this->_redirect('/admin');
	}
	public function changePasswordAction(){
//    	Khai báo các model và form sử dụng trong action

    	Zend_Loader::loadClass('Admin_Forms_ChangePasswordForm');
    	Zend_Loader::loadClass('Admin_Models_UserAdminModel');
    	
//    	Khởi tạo biến
    	
    	$model = new Admin_Models_UserAdminModel();
    	$form = new Admin_Forms_ChangePasswordForm(array('cancel_link'	=> '/admin'));
    	$auth = Zend_Auth::getInstance();
    	
//    	Đổi password nếu người dùng submit form

    	if ($this->_request->isPost()){
    		if ($form->isValid($this->_arrParam)){
    			
    			$pass = trim($this->_arrParam['password']);
    			$re_pass = trim($this->_arrParam['re_pass']);
    			$old_pass = trim($this->_arrParam['old_pass']);
    			
//    			Kiểm tra mật khẩu có đúng không

				$where = $model->getAdapter()->quoteInto('id = ?', $auth->getIdentity()->id);
				$user_info = $model->fetchRow($where);
    			if(($pass == $re_pass) && md5(md5($old_pass) . ' ' . md5($user_info->salt)) == $user_info->password){
    				try {
	    				$data = array('password'	=> md5(md5($pass) . ' ' . md5($user_info->salt)) );
	    				$model->update($data, $where);
	    				echo '<div class="alert alert-success" style = "clear:right">Đổi mật khẩu thành công</div>';
    				} catch (Exception $e) {
    					echo $e;
    				}
    				
    			}else{
					if (($pass == $re_pass)){
						$old_pass_element = $form->getElement('old_pass');
						$old_pass_element->addError("Mật khẩu không đúng");
						$form->addElement($old_pass_element,'old_pass');
					}else{
						$re_pass_element = $form->getElement('re_pass');
						$re_pass_element->addError("Hai trường mật khẩu phải giống nhau");
						$form->addElement($re_pass_element,'re_pass');
					}
				}
    		}
    	}
//    	Truyền biến ra view

    	$this->view->form = $form;
    }
}
